Automated irrigation has many applications, such as gardening, farming, and general lawn care. However, the convenience of these automated systems is often impeded by their need for human intervention and direction. This may be especially problematic as the automated tools may be installed in remote locations with little or no ready physical access. Manually correcting and/or adjusting such components greatly diminishes the time-saving function they were intended to serve.
Where sophisticated algorithms control the behavior of the controller, the situation may be particularly problematic. Such controllers may require software updates on a regular basis to reflect adjustments, improvements, and additional functionality desired by users. Requiring that a user or technician travel to the physical device and install the new software is tedious and undesirable. However, updating the software automatically by remote communication presents its own unique challenges. Many controllers are operating in damp, outdoor environments, hostile to electronics, and implement low-cost, efficient components that may possess limited memory and processing capabilities. A remote update attempt which fails may render the controller inoperable, again frustrating the user's expectations and requiring the user to travel to the physical location of the controller to correct the situation.
Accordingly, there exists a need for an automated software system that can consistently and reliably perform updates to the onboard software of an irrigation controller. Such a system would ideally minimize human intervention and fulfill the controller's promise of a more automated and dependable irrigation service.
Those skilled in the art will appreciate that the logic and process steps illustrated in the various flow diagrams discussed below, may be altered in a variety of ways. For example, the order of the logic may be rearranged, substeps may be performed in parallel, illustrated logic may be omitted, other logic may be included, etc. One will recognize that certain steps may be consolidated into a single step and that actions represented by a single step may be alternatively represented as a collection of substeps. The figures are designed to make the disclosed concepts more comprehensible to a human reader. Those skilled in the art will appreciate that actual data structures used to store this information may differ from the figures and/or tables shown, in that they, for example, may be organized in a different manner; may contain more or less information than shown; may be compressed and/or encrypted; etc.